The present invention relates to the creation and distribution of software applications, the management of software application metrics, and the monetizing of software applications; more particularly to facilitate the distribution of software applications by acting as a intermediary which transforms software applications in such a way that allows for their integration with host software applications, while also enabling software application metrics to be gathered and operated upon allowing for software application monetizing schemes and models to be adopted among other uses of application metrics.
There exist various techniques to allow computers and software applications to interact. For example, remote procedure call (RPC) protocols allow a program on one computer to cause a program on another computer to be executed, and other architectures such as common object request broker architecture (CORBA) and distributed component object model (DCOM) offer the same functionality. Also a variety of middleware programs have been implemented to connect separate applications to allow communication, such as electronic data interchange (EDI) which provide a standard mechanism allowing a computer system of one user of the network to send data to a computer system of another user of the network.
The popularity of the world wide web (web) has brought forth additional technologies enabling computers to inter-communicate. The web allows individuals to make requests with a web browser for web pages and to interact with web pages served from remote servers (web servers). In addition to user initiated requested information, there is also the ability for the web to support the programmatic interaction of remote applications to exchange information via defined application program interfaces (APIs), referred to as web services.
Web services allow heterogeneous applications and computers to interact, and can be defined and implemented using a variety of underlying protocols and techniques. These standard protocols and techniques of web service implementations return data in extensible markup language (XML) format using hypertext transport protocol (HTTP) in response to a web service invocation request specified as a uniform resource identifier (URI), such as a uniform resource locator (URL) that includes a specified operation and one or more query parameters. Other protocols are used for various purposes, such as simple object access protocol (SOAP) for standard message exchange, web services description language (WSDL) for description of service invocations, and universal description, discovery and integration service (UDDI) for discovery of available services.
Web services offer the most value to applications that are not readily available over the Internet. These are sometime referred to as legacy application. These represent software applications that were created prior to the Internet and its widespread adoption. Currently many software applications utilize the Internet and are accessible over the Internet or at least have adopted Internet protocols such as HTTP. While web services offers these new web based applications a means to communicate and share data, web services also represent another layer that must be developed and another protocol that must be adhered to in order for the value of web services to be realized.
Realizing this, other less obtrusive methods have been developed to distribute applications to remote applications and to exchange data with remote applications. An example is a representational state transfer (REST) based architecture. REST is not a protocol or a specification, it is a best practice. When adhering to a RESTfull architecture the REST based application makes it easier for other applications to exchange data with it. However this still means that non REST based applications need to be reengineered and REST also requires that remote applications communicating with a RESTfull application implement a RESTfull API, again requiring additional effort to be put forth in order for the benefits of REST to be realized.
Further desiring an easier way to distribute application and exchange data other techniques have been adopted; a popular technique is to create a “widget”. A widget makes use of client side capabilities of the browser. The two most popular forms of widgets are Javascript and flash. These techniques allow a web site or a host application to typically place a few lines of code into the web page allowing for web based application to be delivered within the page of another web based application. This technique is very easy for the host application however it yet again requires that the distributed application be altered or modified.
Widgets are most often subsets of an application. They do not represent the full stack of an application. For the benefits of the entire application to be enjoyed interaction must take place directly with the application. Widgets also have security restrictions placed on them due to web client constraints.
Widgets have a very crucial downside in that the content they generate is not visible to search engines. A search engine, such as Google and Yahoo, making a request for a web page with widget content for the purpose of indexing and storing the content of the web page in their databases, will not index the content of the widget. Sites deploying content as widgets will thus lose the value of having that content indexed and stored on search engines, thus reducing their chances of being discovered on a search engine.
None of the above mentioned techniques offer any real advantage to the developer of software applications with respect to application metrics gathering and application monetizing scheme implementation.
The current invention allows for the full stack of an application to be deployed into host application in such a way that no changes to the distributed application are required. Content displayed by the distributed application on the host application will be indexed by search engines. In order to deploy the distributed application very little effort is required by these host applications. The current invention enables application metrics to be easily gathered and various monetizing schemes and models to be applied to the distributed application.